"""
base64 ： 必填。待识别图像的 Base64 编码字符串，无需 data:image/png;base64, 等前缀。
options ：可选。参数字典，可选项为：
    preprocessing.median_filter_size ：中值滤波器的大小。取值范围：1~9的奇数。默认不进行滤波。
    preprocessing.sharpness_factor ：锐度增强因子。取值范围：0.1~10.0。默认不调整锐度。
    preprocessing.contrast_factor ：对比度增强因子。取值范围：0.1~10.0。大于1增强对比度，小于1但大于0减少对比度，1保持原样。默认不调整对比度。
    preprocessing.grayscale ：是否将图像转换为灰度图像。true为转换，false为不转换。默认为false。
    preprocessing.threshold ：二值化阈值，用于灰度图像的二值化处理。取值范围：0~255 整数。只有当 "preprocessing.grayscale"=true 时，此参数才生效。默认为false。
"""
import requests
import json
import base64
import os

def image_to_base64(image_path):
    try:
        # 检查文件是否存在
        if not os.path.exists(image_path):
            raise FileNotFoundError(f"图片文件不存在: {image_path}")
        # 读取图片文件
        with open(image_path, "rb") as image_file:
            # 进行Base64编码
            encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
        return encoded_string
    except Exception as e:
        print(f"发生错误: {e}")
        return None


def orc_base64_image(base64_image):
    url = "http://127.0.0.1:8282/api/qrcode"
    data = {
        "base64": base64_image,
        # 可选参数示例
        "options": {
            "preprocessing.sharpness_factor": 1.0,
            "preprocessing.contrast_factor": 1.0,
            "preprocessing.grayscale": False,
            "preprocessing.threshold": False,
        }
    }
    headers = {"Content-Type": "application/json"}
    data_str = json.dumps(data)
    response = requests.post(url, data=data_str, headers=headers)
    response.raise_for_status()
    res_dict = json.loads(response.text)
    return res_dict


def main():
    # 调用函数进行转换
    path = 'c:/Tmp/qrcode.png'
    base64_image = image_to_base64(path)
    data = orc_base64_image(base64_image)
    print(data)

if __name__ == "__main__":
    main()